package wef.PW.utils;

public class StrUtils {

    /**
     * 十六进制String转byte[]
     *
     * @param str
     * @return
     */
    public static byte[] hexStrToByteArray(String str) {
        if (str == null) {
            return null;
        }
        if (str.length() == 0) {
            return new byte[0];
        }
        byte[] byteArray = new byte[str.length() / 2];
        for (int i = 0; i < byteArray.length; i++) {
            String subStr = str.substring(2 * i, 2 * i + 2);
            byteArray[i] = ((byte) Integer.parseInt(subStr, 16));
        }
        return byteArray;
    }

    /**
     * byte[]转十六进制String
     * @param byteArray
     * @return
     */
    public static String byteArrayToHexStr(byte[] byteArray) {
        if (byteArray == null) {
            return null;
        }
        char[] hexArray = "0123456789ABCDEF".toCharArray();
        char[] hexChars = new char[byteArray.length * 2];
        for (int j = 0; j < byteArray.length; j++) {
            int v = byteArray[j] & 0xFF;
            hexChars[j * 2] = hexArray[v >>> 4];
            hexChars[j * 2 + 1] = hexArray[v & 0x0F];
        }
        return new String(hexChars);
    }

    /**
     * 十六进制String转int
      * @param str
     * @return
     */
    public static int hexStrToInt(String str){
        int i = -1;
        if(str == null || str.equals("")){
            return i;
        }
        i = Integer.parseInt(str, 16);
        return i;
    }

    /**
     * int转十六进制String
     * @param i
     * @return
     */
    public String IntToHexStr(int i){
        String str;
        str = Integer.toHexString(i);
        return str;
    }

    /**
     *输入字符串补齐相应的位数
     * @param str
     * @param bit
     * @return
     */
    public static String strPolish(String str, int bit){
        if (str.length() != bit){
            while (str.length() < bit){
                str = "0" + str;
            }
        }
        return str;
    }

    /**
     * 传入一个字符串，两个字符为一组倒序排列  1234 --> 3412
     * @param str
     * @return
     */
    public static String strFlip(String str){
        String s = "";
        for(int i = 0; i < str.length(); i += 2){
            s = str.substring(i, i + 2) + s;
        }
        return s;
    }
}
